package com.service;
import com.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
/*
Spring 针对 Bean 管理中创建对象提供注解:
（1）@Component
（2）@Service
（3）@Controller
（4）@Repository
上面四个注解功能是一样的，都可以用来创建 bean 实例

基于注解方式实现属性注入:
（1）@Autowired：根据属性类型进行自动装配
第一步 把 service 和 dao 对象创建，在 service 和 dao 类添加创建对象注解
第二步 在 service 注入 dao 对象，在 service 类添加 dao 类型属性，在属性上面使用注解
（2）@Qualifier：根据名称进行注入，和上面@Autowired 一起使用
（3）@Resource：可以根据类型注入，可以根据名称注入
（4）@Value：注入普通类型属性
 */
//在注解里面value属性值可以省略不写，默认值是类名称，首字母小写
 @Component(value = "userService")  //等同于：<bean id="userService" class=".."/>
//或者：@Service/@Controller/@Repository
public class UserService {
    //定义dao类型属性,添加注入属性注解,不需要添加set方法,
    @Autowired
    @Qualifier(value = "userDaoImpl1") //根据名称进行注入
    private UserDao userDao;
//    @Resource(name = "userDaoImpl1")  //根据名称进行注入
//    private UserDao userDao;

    public void add() {
        System.out.println("名字为" + name);
        userDao.add();
//        System.out.println(123);
    }

    @Value(value = "abc")
    private String name;
}
